# 管理飞船

import pygame
from pygame.sprite import Sprite

class Ship(Sprite):
    def __init__(self, ai_game):
        super().__init__()
        self.settings = ai_game.settings
        
        #初始化飞船并设置其初始位置
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()
        
        # 加载飞船图像
        self.image = pygame.image.load('./images/ship.bmp')
        # 缩放飞船图像
        original_width, original_height = self.image.get_size()
        self.image = pygame.transform.scale(self.image, (original_width / 5, original_height / 5))
        # 获取飞船的矩形区域
        self.rect = self.image.get_rect() #Pygame能够把所有的游戏元素当作矩形（rect 对象）来处理，即便它们的形状并非矩形也一样。
        
        # 对于每艘新飞船，都将其放在屏幕底部的中央
        self.rect.midbottom = self.screen_rect.midbottom
        
        # 初始化飞船的位置（将位置数从int转为float）
        self.x = float(self.rect.x)
        
        # 移动标志
        self.moving_right = False
        self.moving_left = False


    # 绘制飞船
    def blitme(self):
        self.screen.blit(self.image, self.rect)

    
    # 更新飞船的位置
    def update(self):
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.x += self.settings.ship_speed 
        elif self.moving_left and self.rect.left > 0:
            self.x -= self.settings.ship_speed 
        
        # 根据self.x更新rect对象
        self.rect.x = self.x
        
    # 重置飞船
    def center_ship(self):
        self.rect.midbottom = self.screen_rect.midbottom
        self.x = float(self.rect.x)